parser grammar AnalizadorEjemploParser;

options {
  language = Java;
  tokenVocab = AnalizadorEjemploLexer;
}


@header {package PL.practica6;}


@members{

ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

public boolean listaVacia (){
    if (errores.isEmpty()){
      return true;
    }else
      return false;
}

public ArrayList getListaErrores(){return errores;}


@Override
public void reportError (RecognitionException e){
  System.out.println (getErrorMessage(e, getTokenNames()));
  errores.add(e);
}

}

entrada : instrucciones;
instrucciones : (instruccion)* ;
instruccion : exp SEPARADOR;
exp : exp_mult ((SUMA|RESTA) exp_mult)* ;
exp_mult : exp_base ((MULTIPLICAR|DIVIDIR) exp_base)* ;
exp_base : NUMERO | PARENTESIS exp PARENTESIS;
